﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;


namespace GestorDeFlotasDesktop.AbmAuto
{
    public partial class frmAltaModificacionTurno : Form
    {
        private bool isAlta;
        private Dto.TurnoDto turno;

        public bool ISALTA {
            set { isAlta = value; }
            get { return isAlta;  }
        }

        public Dto.TurnoDto Turno
        {
            set { turno = value; }
            get { return turno; }
        }

        public frmAltaModificacionTurno()
        {
            InitializeComponent();
        }

        private void nupDownHoraInicio_ValueChanged(object sender, EventArgs e)
        {
            nUpDownHoraFin.Minimum = nupDownHoraInicio.Value;
        }
        private void nUpDownHoraFin_ValueChanged(object sender, EventArgs e)
        {
            nupDownHoraInicio.Maximum = nUpDownHoraFin.Value;
        }
        private void frmAltaTurno_Load(object sender, EventArgs e)
        {
            if (ISALTA)
            {
                this.Text = "ALTA TURNO";
            }
            else
            {
                this.Text = "MODIFICACION TURNO";
                tbDescripcion.Text = turno.Descripcion;
                tbValorBandera.Text = turno.ValorBandera;
                tbValorFicha.Text = turno.ValorFicha;
                nupDownHoraInicio.Value = Int32.Parse(turno.HoraInicio);
                nUpDownHoraFin.Value = Int32.Parse(turno.HoraFin);
                ckbHabilitado.Checked = bool.Parse(turno.Habilitado);

            }
            nUpDownHoraFin.Value = nUpDownHoraFin.Maximum;
        }

        private void Limpiar_Click(object sender, EventArgs e)
        {
            tbDescripcion.Text = "";
            tbValorBandera.Text = "0.0";
            tbValorFicha.Text = "0.0";
            nUpDownHoraFin.Maximum = 24;
            nUpDownHoraFin.Minimum = 0;
            nUpDownHoraFin.Value = 24;
            nupDownHoraInicio.Maximum = 24;
            nupDownHoraInicio.Minimum = 0;
            nupDownHoraInicio.Value = 0;
        }



        private void tbValorBandera_KeyPress(object sender, KeyPressEventArgs e)
        {
            keyPresss(e);
        }

        private void tbValorFicha_KeyPress(object sender, KeyPressEventArgs e)
        {
            keyPresss(e);
        }

        private void btGuardar_Click(object sender, EventArgs e)
        {
            bool bValidado = true;
            this.errorProvider.Clear();
            bValidado = tbValorFicha_Validated(sender, e) &
                tbValorBandera_Validated(sender, e) &
                tbDescripcion_Validated(sender, e);
            if (bValidado)
            {
                Dao.TurnoDao turnoDao = new Dao.TurnoDao();
                try
                {
                    if (ISALTA)
                    {
                        turnoDao.add(Convert.ToInt32(nupDownHoraInicio.Value), Convert.ToInt32(nUpDownHoraFin.Value), tbDescripcion.Text, Convert.ToDouble(tbValorFicha.Text), Convert.ToDouble(tbValorBandera.Text));
                    }
                    else
                    {
                        turnoDao.modificar(Convert.ToInt32(Turno.Id), Convert.ToInt32(nupDownHoraInicio.Value), Convert.ToInt32(nUpDownHoraFin.Value), tbDescripcion.Text, Convert.ToDouble(tbValorFicha.Text), Convert.ToDouble(tbValorBandera.Text));
                    }

                    this.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }

        }
        private bool tbDescripcion_Validated(object sender, EventArgs e)
        {
            string msgError = "";
            if ("".Equals(tbDescripcion.Text))
            {
                this.errorProvider.SetError(tbDescripcion, "Campo obligatorio");
                return false;
            }
            if (tbDescripcion.Text.Length > 255)
            {
                msgError = "El largo del campo no puede superar los 255 caracteres";
            }
            if (!"".Equals(msgError))
            {
                this.errorProvider.SetError(tbValorFicha, msgError);
                return false;
            }
            return true;
        }

        private bool tbValorFicha_Validated(object sender, EventArgs e)
        {
            string msgError = "";
            if ("".Equals(tbValorFicha.Text))
            {
                this.errorProvider.SetError(tbValorFicha, "Campo obligatorio");
                return false;
            }
            if (tbValorFicha.Text.Length > 22)
            {
                msgError = "El largo del campo no puede superar los 22 digitos";
            }
            try
            {
                Double dobre = Double.Parse(tbValorFicha.Text);
            }
            catch (Exception ex)
            {
                msgError = msgError + "No es un numero";
            }
            if (!"".Equals(msgError))
            {
                this.errorProvider.SetError(tbValorFicha, msgError);
                return false;
            }    
            return true;
        }
        private bool tbValorBandera_Validated(object sender, EventArgs e)
        {
            string msgError = "";
            if ("".Equals(tbValorBandera.Text))
            {
                this.errorProvider.SetError(tbValorBandera, "Campo obligatorio");
                return false;
            }
            if (tbValorBandera.Text.Length > 22)
            {
                msgError = "El largo del campo no puede superar los 22 digitos";
            }
            try
            {
                Double dobre = Double.Parse(tbValorBandera.Text);
            }
            catch (Exception ex)
            {
                msgError = msgError + "No es un numero";
            }
            if (!"".Equals(msgError))
            {
                this.errorProvider.SetError(tbValorBandera, msgError);
                return false;
            }
            return true;
        }

        private void keyPresss(KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsPunctuation(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        
        
    }
}
